package com.love.usedcar.service.impl;

import java.util.List;

import com.love.common.core.constant.CacheConstants;
import com.love.common.core.utils.DateUtils;
import com.love.common.core.utils.StringUtils;
import com.love.usedcar.utils.UsedCarUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.love.usedcar.mapper.UsedCarConfigMapper;
import com.love.usedcar.domain.UsedCarConfig;
import com.love.usedcar.service.IUsedCarConfigService;

/**
 * 车辆配置（管理车辆配置项）Service业务层处理
 * 
 * @author love
 * @date 2025-10-01
 */
@Service
public class UsedCarConfigServiceImpl implements IUsedCarConfigService 
{
    @Autowired
    private UsedCarConfigMapper usedCarConfigMapper;

    /**
     * 查询车辆配置（管理车辆配置项）
     * 
     * @param configId 车辆配置（管理车辆配置项）主键
     * @return 车辆配置（管理车辆配置项）
     */
    @Override
    public UsedCarConfig selectUsedCarConfigByConfigId(Long configId)
    {
        return usedCarConfigMapper.selectUsedCarConfigByConfigId(configId);
    }

    /**
     * 查询车辆配置（管理车辆配置项）列表
     * 
     * @param usedCarConfig 车辆配置（管理车辆配置项）
     * @return 车辆配置（管理车辆配置项）
     */
    @Override
    public List<UsedCarConfig> selectUsedCarConfigList(UsedCarConfig usedCarConfig)
    {
        List<UsedCarConfig> list = UsedCarUtils.getUsedCarConfigCache(CacheConstants.CAR_CONFIG);
        if (StringUtils.isNotEmpty(list)){
            return list;
        }
        list = usedCarConfigMapper.selectUsedCarConfigList(usedCarConfig);
        if (StringUtils.isNotEmpty(list)){
            UsedCarUtils.setCarConfigCache(CacheConstants.CAR_CONFIG,list);
            return list;
        }
        return null;
    }

    /**
     * 新增车辆配置（管理车辆配置项）
     * 
     * @param usedCarConfig 车辆配置（管理车辆配置项）
     * @return 结果
     */
    @Override
    public int insertUsedCarConfig(UsedCarConfig usedCarConfig)
    {
        usedCarConfig.setCreateTime(DateUtils.getNowDate());
        int row = usedCarConfigMapper.insertUsedCarConfig(usedCarConfig);
        if (row > 0){
            List<UsedCarConfig> selectUsedCarConfigList = usedCarConfigMapper.selectUsedCarConfigList(usedCarConfig);
            UsedCarUtils.setCarConfigCache(CacheConstants.CAR_CONFIG,selectUsedCarConfigList);
        }
        return row;
    }

    /**
     * 修改车辆配置（管理车辆配置项）
     * 
     * @param usedCarConfig 车辆配置（管理车辆配置项）
     * @return 结果
     */
    @Override
    public int updateUsedCarConfig(UsedCarConfig usedCarConfig)
    {
        usedCarConfig.setUpdateTime(DateUtils.getNowDate());
        int row = usedCarConfigMapper.updateUsedCarConfig(usedCarConfig);
        if (row > 0){
            UsedCarUtils.removeCarConfigCache(CacheConstants.CAR_CONFIG);
        }
        return row;
    }

    /**
     * 批量删除车辆配置（管理车辆配置项）
     * 
     * @param configIds 需要删除的车辆配置（管理车辆配置项）主键
     * @return 结果
     */
    @Override
    public int deleteUsedCarConfigByConfigIds(Long[] configIds)
    {
        int row = usedCarConfigMapper.deleteUsedCarConfigByConfigIds(configIds);
        if (row > 0){
            UsedCarUtils.removeCarConfigCache(CacheConstants.CAR_CONFIG);
        }
        return row;
    }

    /**
     * 删除车辆配置（管理车辆配置项）信息
     * 
     * @param configId 车辆配置（管理车辆配置项）主键
     * @return 结果
     */
    @Override
    public int deleteUsedCarConfigByConfigId(Long configId)
    {
        int row = usedCarConfigMapper.deleteUsedCarConfigByConfigId(configId);
        if (row > 0){
            UsedCarUtils.removeCarConfigCache(CacheConstants.CAR_CONFIG);
        }
        return row;
    }
}
